﻿Partial Class Administracion_Usuarios
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack = False Then
            'cargar usuarios
            cargarCombos()
            cargarUsuarios()
        End If
    End Sub
    Sub cargarCombos()

        Using bd As New bdSeguridadDataContext()
            Dim b = From p In bd.Web_Perfiles
                    Order By p.Perfil
                    Select p.Perfil, p.CodPerfil
            ddlPerfil.DataSource = b
            ddlPerfil.DataTextField = "Perfil"
            ddlPerfil.DataValueField = "CodPerfil"
            ddlPerfil.DataBind()
            ddlPerfil.Items.Insert(0, New ListItem("Seleccione un perfil", ""))
        End Using


        Using bd As New BdHogaresDataContext()
            Dim b = From p In bd.web_Operadores
                    Order By p.Nombre
                    Select p.idOperador, p.Nombre
            ddlOperador.DataSource = b
            ddlOperador.DataTextField = "Nombre"
            ddlOperador.DataValueField = "Idoperador"
            ddlOperador.DataBind()
            ddlOperador.Items.Insert(0, New ListItem("Seleccione un Operador", ""))
        End Using
    End Sub
    Sub cargarUsuarios()
        Dim bd As New bdSeguridadDataContext()
        Dim a = From u In bd.Web_Usuarios
                Select u.web_Operado.Nombre, u.IdUsurio, u.Nombres, u.Apellidos, u.Web_Perfile.Perfil, u.Usuario, u.Clave, Activo = If(u.Activo = True, "Sí", "No")
        grdUsuarios.DataSource = a
        grdUsuarios.DataBind()
    End Sub

    Protected Sub btnNuevo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
        pnlRegistrarUsuario.Visible = True
    End Sub

    Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        pnlRegistrarUsuario.Visible = False
    End Sub

    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If Page.IsValid = False Then
            Exit Sub
        End If
        If String.IsNullOrEmpty(hdIdusuario.Value) Or hdIdusuario.Value = 0 Then
            insertarUsuario()
        Else
            ActualizaUsuario(hdIdusuario.Value)
        End If
    End Sub
    Sub insertarUsuario()
        Dim u As New Web_Usuario
        u.IdOperador = ddlOperador.SelectedValue
        u.Nombres = txtNombre.Text
        u.Apellidos = txtApellido.Text
        u.Usuario = txtUsuario.Text
        u.Clave = txtClave.Text
        u.CodPerfil = ddlPerfil.SelectedValue
        u.email = txtEmail.Text
        u.Activo = ddlActivo.SelectedValue

        Using bd As New bdSeguridadDataContext
            bd.Web_Usuarios.InsertOnSubmit(u)
            bd.SubmitChanges()
            bd.registrarLog(Context.User.Identity.Name, 1, Request.CurrentExecutionFilePath)
        End Using
        Dim script = "window.location ='" & Context.Request.Url.ToString & "';"
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Abrir", script, True)
    End Sub
    Sub ActualizaUsuario(ByVal idUsuario As Integer)
        Using bd As New bdSeguridadDataContext
            Dim a = From us In bd.Web_Usuarios
                            Where us.IdUsurio = CInt(idUsuario)
                            Select us
            Dim u As New Web_Usuario
            u = a.FirstOrDefault
            u.IdOperador = ddlOperador.SelectedValue
            u.Nombres = txtNombre.Text
            u.Apellidos = txtApellido.Text
            u.Usuario = txtUsuario.Text
            u.Clave = txtClave.Text
            u.CodPerfil = ddlPerfil.SelectedValue
            u.email = txtEmail.Text
            u.Activo = ddlActivo.SelectedValue
            bd.SubmitChanges()
            bd.registrarLog(Context.User.Identity.Name, 1, Request.CurrentExecutionFilePath)
        End Using
        Dim script = "window.location ='" & Context.Request.Url.ToString & "';"
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Abrir", script, True)
    End Sub
    Protected Sub grdUsuarios_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdUsuarios.RowCommand
        Select Case e.CommandName
            Case "Editar"
                Using bd As New bdSeguridadDataContext

                    Dim a = From u In bd.Web_Usuarios
                            Where u.IdUsurio = CInt(e.CommandArgument)
                            Select u
                    Dim us As New Web_Usuario()
                    us = a.FirstOrDefault
                    hdIdusuario.Value = us.IdUsurio
                    txtNombre.Text = us.Nombres
                    txtApellido.Text = us.Apellidos
                    txtClave.Text = us.Clave
                    txtUsuario.Text = us.Usuario
                    txtEmail.Text = us.email
                    ddlActivo.SelectedValue = If(us.Activo = True, "1", "0")
                    ddlPerfil.SelectedValue = us.CodPerfil
                    ddlOperador.SelectedValue = us.IdOperador
                    pnlRegistrarUsuario.Visible = True
                End Using

            Case "Eliminar"
                Using bd As New BdHogaresDataContext
                    Dim a As Integer = e.CommandArgument
                    bd.eliminarusuario(a)
                    bd.SubmitChanges()
                End Using
                cargarUsuarios()
            Case Else
                Exit Sub
        End Select
    End Sub

    Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
        'verificar que no este repetido el nombre de usuario
        Dim bd As New bdSeguridadDataContext
        Dim a = From u In bd.Web_Usuarios
                 Where u.Usuario = txtUsuario.Text AndAlso u.IdUsurio <> If(String.IsNullOrEmpty(hdIdusuario.Value), "0", hdIdusuario.Value)

        If a.Count > 0 Then
            args.IsValid = False
            CustomValidator1.ErrorMessage = "Ya existe el nombre de usuario en la base de datos<br/>"
        End If
    End Sub
End Class
